package com.feng.main;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class AddQueue extends Thread{
	
	String regex = "";
	
	AddQueue(String regex){
		this.regex = regex;
	}
	
	public void run(){
		
		System.out.println("开始执行add线程");
		
		while(true){
			
			//不能限制其大小，因为有的网页中图片全部不能用
			if(Queues.htmlUrlQueue.size() <50 || Queues.imgUrlQueue.size() < 100){
				
				
				//获取并移除
				String url = Queues.htmlUrlQueue.poll();
				
				String content = new HtmlContent().getContent(url);
				
				getHtmlUrl(content);
				getImagesUrl(content);
				
				//添加至已访问队列
				Queues.visitedHtmlUrlQueue.offer(url);
				
			}
		}
		
	}
	
	
	/**
	 * 获取所有页面链接
	 * @param context
	 */
	public void getHtmlUrl(String context){
		
		//如何去除外部链接
		
		String regex = "http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?";
		
		
		
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(context);
		
		while(m.find()){
			
			String url = m.group();
			
			if(!Queues.visitedHtmlUrlQueue.contains(url) && url.contains(this.regex)){
				Queues.htmlUrlQueue.offer(url);
				System.out.println("add Html url : "+url);
				
				System.out.println("网页链接还剩余："+Queues.htmlUrlQueue.size());
				System.out.println("图片链接还剩余："+Queues.imgUrlQueue.size());
				
			}
			
			
		}
		
	}
	
	/**
	 * 获取所有图片链接
	 * @param context
	 */
	public void getImagesUrl(String context){
		
		//如何去除外部链接
		
		String regex = "http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?(.jpg|.mp4|.rmvb|.png|.mkv|.gif|.bmp|.jpeg|.flv|.avi|.asf|.rm|.wmv)+";
		
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(context);
		
		while(m.find()){
			
			String url = m.group();
			
			if(!Queues.visitedImgUrlQueue.contains(url) && url.contains(this.regex)){
				Queues.imgUrlQueue.offer(url);
				System.out.println("add Image url : "+url);
			}
			
			
		}
		
	}

}
